/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import Modelo.Choferes;
import Modelo.UnidadT;
import Vista.JFrameChoferes;
import Vista.JFrameUnidadT;
import Vista.Mensajes;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.LinkedList;

/**
 *
 * @author Celeron
 */
public class ControladorUnidadT implements ActionListener, KeyListener {

    private JFrameUnidadT formUnidadT;
    private LinkedList<UnidadT> listaUnidadT;

    public ControladorUnidadT(LinkedList<UnidadT> ListaUT) {
        listaUnidadT = ListaUT;
        formUnidadT = new JFrameUnidadT();
        formUnidadT.agregarListener(this, this);
        formUnidadT.setVisible(true);
        Enabled(false);
        
         //------------------------------
        formUnidadT.getTxtPlaca().addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                PlacaKeyTyped(e);
            }

            public void keyPressed(KeyEvent e) {

                PlacakeyPressed(e);
            }

    private void PlacaKeyTyped(KeyEvent e) {
        String Cadena;
        char Caracter;

        Cadena = formUnidadT.getTxtPlaca().getText();
        if (Cadena.length() == 8) {
            e.consume();
        } else {
            Caracter = e.getKeyChar();

            if (Caracter == '.') {
                e.consume();
            }

            
        }
            }

     private void PlacakeyPressed(KeyEvent e) {
            if (e.getSource().equals(formUnidadT.getTxtPlaca())) {

            String Cadena;
            int PosiUnidad;
            UnidadT Unidad = new UnidadT();
            Cadena = formUnidadT.getTxtPlaca().getText();

            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() != 8) {
                Mensajes.Aviso("Placa invalida", "");
                formUnidadT.getTxtPlaca().requestFocusInWindow();
            }
            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() == 8) {

                PosiUnidad = ExisteUnidad(Cadena);
                if (PosiUnidad >= 0) {
                    Unidad = listaUnidadT.get(PosiUnidad);
                    formUnidadT.getTxtPlaca().setText(Unidad.getPlaca());
                    formUnidadT.getTxtDescripcion().setText(Unidad.getDescripcion());
                    formUnidadT.getTxtCodCooperativa().setText(Unidad.getCodCooperativa());

                    Mensajes.Aviso("Unidad de Transporte ya Existe", "");
                    Limpiar();

                } else {
                    Enabled(true);
                    //formUnidadT.getTxtCapacidad().requestFocusInWindow();

                }
            }

        }
            }

    private int ExisteUnidad(String PlaUT) {
        int i = 0, Posi = -1;

        UnidadT Unidad ;
        String PlaLista;

        for (i = 0; i < listaUnidadT.size(); i++) {
           Unidad = listaUnidadT.get(i);

            PlaLista = Unidad.getPlaca();

            if (PlaLista.equals(PlaUT)) {
                Posi = i;
                return Posi;
            }

        }

        return Posi;
            }

     private void Grabar() {
        UnidadT Unidad = new UnidadT();
        String Cadena;

        Cadena = formUnidadT.getTxtPlaca().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Placa Vacia", "");
            formUnidadT.getTxtPlaca().requestFocusInWindow();
            return;
        }
/*
        Cadena = formUnidadT.getTxtCapacidad().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Capacidad Vacia", "");
            formUnidadT.getTxtCapacidad().requestFocusInWindow();
            return;
        }
*/
        Cadena = formUnidadT.getTxtDescripcion().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Descripcion Vacia", "");
            formUnidadT.getTxtDescripcion().requestFocusInWindow();
            return;
        }

        Cadena = formUnidadT.getTxtCodCooperativa().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Codigo de Cooperativa vacio", "");
            formUnidadT.getTxtCodCooperativa().requestFocusInWindow();
            return;
        }
            if (Cadena.length() !=11) {
            formUnidadT.getTxtCodCooperativa().requestFocusInWindow();
            return;
            
        }
/*
        Unidad.UnidadT(formUnidadT.getTxtPlaca().getText(),
                formUnidadT.getTxtCapacidad().getText(),
                formUnidadT.getTxtDescripcion().getText(),
                formUnidadT.getTxtCodCooperativa().getText());
*/
        listaUnidadT.add(Unidad);
         Mensajes.Aviso("Unidad de Transporte guardado con exito", "");
         Limpiar();
         Enabled(false);
         formUnidadT.getTxtPlaca().requestFocusInWindow();
    }
    
    private void Limpiar() {
        formUnidadT.getTxtPlaca().setText("");
        //formUnidadT.getTxtCapacidad().setText("");
        formUnidadT.getTxtDescripcion().setText("");
        formUnidadT.getTxtCodCooperativa().setText("");
            }
        });
        //-----------------------

}

    private void Enabled(boolean Status) {
        formUnidadT.getTxtPlaca().setEnabled(!Status);
        //formUnidadT.getTxtCapacidad().setEnabled(Status);
        formUnidadT.getTxtDescripcion().setEnabled(Status);
        formUnidadT.getTxtCodCooperativa().setEnabled(Status);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(formUnidadT.getBtnSalirUT())) {
           formUnidadT.dispose();
        }

        if (e.getSource().equals(formUnidadT.getBtnBuscarUT())) {
            new ControladorConsulUnidadT(listaUnidadT);
        }
        if (e.getSource().equals(formUnidadT.getBtnGuardarUT())) {
            Grabar();
        }
        if (e.getSource().equals(formUnidadT.getBtnEliminarUT())) {
            Limpiar();
            Enabled(false);
        }
    }

    @Override
    public void keyTyped(KeyEvent e) {
        //throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void keyPressed(KeyEvent e) {
        //throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void keyReleased(KeyEvent e) {
        //throw new UnsupportedOperationException("Not supported yet.");
    }

    private void Grabar() {
        //throw new UnsupportedOperationException("Not yet implemented");
    }

    private void Limpiar() {
        //throw new UnsupportedOperationException("Not yet implemented");
    }
    }
